package com.yjz.designpattern.CommandPattern;

import org.junit.Test;

import java.util.Arrays;

/**
 * 命令模式测试类,在命令模式中这个等价于client
 */
public class CommandPattern {

    @Test
    public void commandPatternTest() {

        //创建命令接受者(执行者)
        Receiver receiver = new Receiver();

        //创建命令,传入命令接受者(执行者)
        Command command = new ConcreteCommand(receiver);

        //创建调用者
        Invoker invoker = new Invoker();

        //给调用者设置命令
        invoker.setCommand(Arrays.asList(command));

        //执行调用者自己的业务方法
        invoker.invokerBusinessMethod();

        /**
         * 总结:  Invoker 依赖 Command, Command依赖Receiver ,  Invoker 不直接依赖 Receiver, 俩者通过命令解耦
         */
    }

}
